<?php
namespace app\%module%\controller;

use app\common\model\%className% as %className%Model;
use think\Exception;

class %className% extends BaseController
{
    /**
     * 数据列表
     */
    public function index()
    {
        # 递归
        %recursionYes%$list = nav_array(%className%Model::where('status',1)->select());
        // 不递归开启分页 - 查询状态为1的用户数据 并且每页显示10条数据
        %recursionNo%$this->assign('paging', true);
        %recursionNo%$list = %className%Model::where('status',1)->paginate(10);

        // 把数据赋值给模板变量list
        $this->assign('list',$list);

        // 渲染模板输出
        return $this->fetch();
    }

    /**
     * 添加数据
     */
    public function create($parent_id=null)
    {
        // 数据模型
        $model = new %className%Model();
        // 请求对象
        $request = $this->request;

        // POST请求
        if ($request->isPost()) {

            // POST 数据
            $data = $request->post();
            // 对POST数据二次处理

            // 保存数据
            if ($model->save($data)){
                // 成功跳转
                $this->success('添加成功！',url('index'));
            }else{
                // 失败跳转
                $this->error('添加失败！',url('index'));
            }

        } else {

            // 视图赋值 - GET请求
            $this->assign('parent_id',$parent_id);
            $this->assign('model',$model);

            // 渲染视图
            return $this->fetch('form');

        }

    }

    /**
     * 修改数据
     */
    public function update($id)
    {
        // 获取数据模型
        $model = $this->findModel($id);
        // 请求对象
        $request = $this->request;

        // POST请求
        if ($request->isPost()) {

            // POST数据
            $data = $request->post();
            // POST数据二次处理

            // 数据保存
            if ($model->save($data)){
                // 保存成功
                $this->success('修改成功！',url('update',['id'=>$id]));
            }else{
                // 保存失败
                $this->error('修改失败！',url('update',['id'=>$id]));
            }

        } else {

            // 视图赋值
            $this->assign('model',$model);

            // 渲染视图
            return $this->fetch('form');

        }

    }

    /**
     * 删除数据
     * @param $id
     * @throws Exception
     */
    public function delete($id)
    {
        // 数据模型
        $model = $this->findModel($id);

        // 删除
        if ($model->delete()) {
            $this->success('删除成功！',url('index'));
        } else {
            $this->error('删除失败！',url('index'));
        }

    }

    /**
     * 获取数据模型
     */
    protected function findModel($id)
    {
        // 数据模型存在
        if (($model = %className%Model::get($id)) !== null) {
            return $model;
        }
        // 数据不存在，拋出异常
        throw new Exception('%className%中id为：'.$id.'的数据模型不存在');
    }

}